$(function () {
    template.defaults.imports.dateFormat = function (dt) {
        let dtObj = new Date(dt)
        let y = dtObj.getFullYear();
        let m = padZero(dtObj.getMonth() + 1);
        let d = padZero(dtObj.getDate());

        let hh = padZero(dtObj.getHours());
        let mm = padZero(dtObj.getMinutes());
        let ss = padZero(dtObj.getSeconds());
        return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
    }
    function padZero(n) {
        return n < 10 ? '0' + n : n;
    }

    // 1.查询参数
    let q = {
        pagenum: 1,     //	int	页码值
        pagesize: 2,    //	是	int	每页显示多少条数据
        cate_id: "",    //	string	文章分类的 Id
        state: "",      //	string	文章的状态，可选值有：已发布、草稿
    }
    // 2.渲染文章列表页面
    let layer = layui.layer;
    initTable();
    // 封装渲染文章列表页面
    function initTable() {
        $.ajax({
            method: 'GET',
            url: '/my/article/list',
            data: q,
            success: function (res) {
                // console.log(res);
                // 状态校验
                if (res.status != 0) {
                    return layer.msg(res.message);
                }
                // 成功后渲染(传递对象，使用属性)
                let str = template('tpl-table', { data: res.data });
                $("tbody").html(str);
                // 分页
                renderPage(res.total);
            }
        })
    };

    // 3.初始化分类
    let form = layui.form;
    initCate();
    function initCate() {
        $.ajax({
            method: "GET",
            url: "/my/article/cates",
            success: function (res) {
                if (res.status != 0) {
                    return layer.msg(res.message)
                }
                let htmlStr = template("tpl-cate", res);
                $("[name=cate_id]").html(htmlStr)
                form.render()
            }

        })
    }
    // 4.筛选区域
    $("#form-search").on('submit', function (e) {
        e.preventDefault();
        let state = $("[name=state]").val()
        let cate_id = $("[name=cate_id]").val()
        q.state = state;
        q.cate_id = cate_id
        initTable();
    })

    // 5.分页
    let laypage = layui.laypage
    function renderPage(total) {
        // alert(total)
        laypage.render({
            elem: 'pageBox', // 注意，这里的 test1 是 ID，不用加 # 号
            count: total, // 数据总数，从服务端得到
            limit: q.pagesize, // 每页显示的条数
            curr: q.pagenum, // 当前页
            layout: ['count', 'limit', 'prev', 'page', 'next', 'skip'],
            limits: [2, 3, 5, 10, 20],
            jump: function (obj, first) {
                //obj包含了当前分页的所有参数，比如：
                // console.log(obj.curr); //得到当前页，以便向服务端请求对应页的数据。
                // console.log(obj.limit); //得到每页显示的条数
                q.pagesize = obj.curr;
                q.pagenum = obj.limit;
                //首次不执行
                if (!first) {
                    //do something
                    initTable();
                }

            }
        })
    }
    // 6.删除
    $("tbody").on('click', '.btn-delete', function () {
        // 获取自定义属性，要在弹窗之外
        let Id = $(this).attr('data-id');
        // 弹窗
        layer.confirm('是否确定删除?', { icon: 3, title: '提示' }, function (index) {
            // 发送ajax
            $.ajax({
                method: 'GET',
                // :删除， /保留
                url: '/my/article/delete/' + Id,
                success: function (res) {
                    // 判断状态
                    if (res.status != 0) {
                        return layer.msg(res.message);
                    }
                    // bug: 删除最有一条元素之后，当前页没有-1
                    //     当前页必须大于1，等于1都不行;
                    if ($('.btn-delete').length == 1 && q.pagenum > 1) {
                        q.pagenum--;
                    }
                    // 成功后，重新渲染
                    layer.msg("恭喜您，删除成功！");
                    // 在重新渲染之前，被删除的元素，页面中依然存在
                    initTable();
                }
            })

            layer.close(index);
        });
    })
})